document.addEventListener('DOMContentLoaded', function() {
    const taskInput = document.getElementById('taskInput');
    const addTaskBtn = document.getElementById('addTask');
    const taskList = document.getElementById('taskList');
    const container = document.querySelector('.container');
    const copyAllBtn = document.getElementById('copyAllBtn');
    const copyAndClearBtn = document.getElementById('copyAndClearBtn');
    const exportAndClearBtn = document.getElementById('exportAndClearBtn');
    const importFromFileBtn = document.getElementById('importFromFileBtn');
    const fileInput = document.getElementById('fileInput');
    
    // 从localStorage加载任务
    let tasks = JSON.parse(localStorage.getItem('tasks')) || [];
    
    // 初始化Sortable
    const sortable = new Sortable(taskList, {
        animation: 150,
        handle: '.drag-handle',
        onEnd: function() {
            // 更新任务顺序
            updateTasksOrder();
            // 保存到localStorage
            saveTasks();
            // 更新样式
            updateTaskStyles();
        }
    });
    
    // 渲染任务列表
    function renderTasks() {
        taskList.innerHTML = '';
        tasks.forEach((task, index) => {
            const li = document.createElement('li');
            li.className = `task-item position-${index + 1}`;
            li.innerHTML = `
                <div class="task-content">${task}</div>
                <div class="drag-handle">⋮⋮</div>
                <button class="arrow-btn arrow-up" title="移到顶部">↑</button>
                <button class="arrow-btn arrow-down" title="移到底部">↓</button>
            `;
            
            // 添加移到顶部事件
            const upBtn = li.querySelector('.arrow-up');
            upBtn.addEventListener('click', function() {
                if (index > 0) {
                    const task = tasks.splice(index, 1)[0];
                    tasks.unshift(task);
                    saveTasks();
                    renderTasks();
                }
            });
            
            // 添加移到底部事件
            const downBtn = li.querySelector('.arrow-down');
            downBtn.addEventListener('click', function() {
                if (index < tasks.length - 1) {
                    const task = tasks.splice(index, 1)[0];
                    tasks.push(task);
                    saveTasks();
                    renderTasks();
                }
            });
            
            taskList.appendChild(li);
        });
        
        // 更新任务样式
        updateTaskStyles();
        
        // 移除旧的删除按钮（如果存在）
        const oldDeleteBtn = document.getElementById('deleteBottomBtn');
        if (oldDeleteBtn) {
            oldDeleteBtn.remove();
        }
        
        // 如果有任务，添加底部删除按钮
        if (tasks.length > 0) {
            const deleteBtn = document.createElement('button');
            deleteBtn.id = 'deleteBottomBtn';
            deleteBtn.className = 'delete-bottom-btn';
            deleteBtn.textContent = '删除最底部任务';
            deleteBtn.addEventListener('click', function() {
                tasks.pop(); // 删除最后一个任务
                saveTasks();
                renderTasks();
            });
            container.appendChild(deleteBtn);
        }
    }
    
    // 更新任务顺序
    function updateTasksOrder() {
        const taskItems = taskList.querySelectorAll('.task-item');
        const newTasks = [];
        
        taskItems.forEach(item => {
            const taskContent = item.querySelector('.task-content').textContent;
            newTasks.push(taskContent);
        });
        
        tasks = newTasks;
    }
    
    // 更新任务样式
    function updateTaskStyles() {
        const taskItems = taskList.querySelectorAll('.task-item');
        
        taskItems.forEach((item, index) => {
            // 移除所有位置类
            item.classList.remove('position-1', 'position-2', 'position-3', 'position-4');
            
            // 添加对应位置类
            if (index === 0) {
                item.classList.add('position-1');
            } else if (index === 1) {
                item.classList.add('position-2');
            } else if (index === 2) {
                item.classList.add('position-3');
            } else {
                item.classList.add('position-4');
            }
        });
    }
    
    // 保存任务到localStorage
    function saveTasks() {
        localStorage.setItem('tasks', JSON.stringify(tasks));
    }
    
    // 添加任务
    function addTask() {
        const taskText = taskInput.value.trim();
        if (taskText) {
            tasks.unshift(taskText); // 使用unshift添加到数组开头而不是push添加到末尾
            saveTasks();
            renderTasks();
            taskInput.value = '';
        }
    }
    
    // 添加任务事件
    addTaskBtn.addEventListener('click', addTask);
    
    // 回车添加任务
    taskInput.addEventListener('keypress', function(e) {
        if (e.key === 'Enter') {
            addTask();
        }
    });
    
    // 初始渲染
    renderTasks();
    
    // 复制所有任务到剪贴板
    function copyAllTasks() {
        if (tasks.length === 0) {
            alert('当前没有任务可复制！');
            return;
        }
        
        const taskTexts = tasks.join('\n');
        copyToClipboard(taskTexts);
        
        // 创建临时提示元素，而不是使用alert
        showTemporaryNotification('已成功复制所有任务到剪贴板！');
    }
    
    // 显示临时通知
    function showTemporaryNotification(message) {
        const notification = document.createElement('div');
        notification.textContent = message;
        notification.style.position = 'fixed';
        notification.style.bottom = '20px';
        notification.style.left = '50%';
        notification.style.transform = 'translateX(-50%)';
        notification.style.backgroundColor = '#4CAF50';
        notification.style.color = 'white';
        notification.style.padding = '10px 20px';
        notification.style.borderRadius = '4px';
        notification.style.zIndex = '1000';
        notification.style.boxShadow = '0 2px 10px rgba(0,0,0,0.2)';
        
        document.body.appendChild(notification);
        
        // 2秒后自动移除通知
        setTimeout(() => {
            notification.style.opacity = '0';
            notification.style.transition = 'opacity 0.5s';
            setTimeout(() => {
                document.body.removeChild(notification);
            }, 500);
        }, 2000);
    }
    
    // 复制所有任务到剪贴板并清空
    function copyAndClearTasks() {
        if (tasks.length === 0) {
            alert('当前没有任务可复制！');
            return;
        }
        
        const taskTexts = tasks.join('\n');
        copyToClipboard(taskTexts);
        tasks = [];
        saveTasks();
        renderTasks();
        alert('已成功复制所有任务到剪贴板并清空列表！');
    }
    
    // 复制文本到剪贴板的通用函数
    function copyToClipboard(text) {
        // 创建一个临时textarea元素
        const textarea = document.createElement('textarea');
        textarea.value = text;
        textarea.style.position = 'fixed';  // 防止滚动到底部
        document.body.appendChild(textarea);
        textarea.select();
        
        try {
            // 执行复制命令
            document.execCommand('copy');
        } catch (err) {
            console.error('复制失败:', err);
            alert('复制失败，请重试！');
        } finally {
            // 移除临时元素
            document.body.removeChild(textarea);
        }
    }
    
    // 添加按钮事件监听
    copyAllBtn.addEventListener('click', copyAllTasks);
    copyAndClearBtn.addEventListener('click', copyAndClearTasks);
    exportAndClearBtn.addEventListener('click', exportAndClearTasks);
    
    // 导出所有任务到文件并清空
    function exportAndClearTasks() {
        if (tasks.length === 0) {
            alert('当前没有任务可导出！');
            return;
        }
        
        // 保存当前任务的副本
        const tasksCopy = [...tasks];
        const taskTexts = tasksCopy.join('\n');
        
        // 创建文件名，格式：大小字排序任务清单_yyyy_mm_dd_hh_mm_ss.txt
        const now = new Date();
        const year = now.getFullYear();
        const month = String(now.getMonth() + 1).padStart(2, '0');
        const day = String(now.getDate()).padStart(2, '0');
        const hours = String(now.getHours()).padStart(2, '0');
        const minutes = String(now.getMinutes()).padStart(2, '0');
        const seconds = String(now.getSeconds()).padStart(2, '0');
        
        const fileName = `大小字排序任务清单_${year}_${month}_${day}_${hours}_${minutes}_${seconds}.txt`;
        
        // 创建下载链接
        const blob = new Blob([taskTexts], { type: 'text/plain;charset=utf-8' });
        const url = URL.createObjectURL(blob);
        const link = document.createElement('a');
        link.href = url;
        link.download = fileName;
        
        // 创建一个确认对话框，让用户确认下载完成后再清空
        link.onclick = function() {
            // 延迟显示确认对话框，给浏览器时间开始下载
            setTimeout(() => {
                if (confirm('文件已开始下载。下载完成后，点击"确定"清空任务列表，点击"取消"保留任务列表。')) {
                    // 用户确认下载完成，清空任务列表
                    tasks = [];
                    saveTasks();
                    renderTasks();
                    showTemporaryNotification(`已成功导出任务到文件 "${fileName}" 并清空列表！`);
                } else {
                    showTemporaryNotification(`已成功导出任务到文件 "${fileName}"，任务列表已保留。`);
                }
            }, 1000);
        };
        
        // 触发下载
        document.body.appendChild(link);
        link.click();
        
        // 清理下载链接
        setTimeout(() => {
            document.body.removeChild(link);
            URL.revokeObjectURL(url);
        }, 100);
    }
    
    // 从文件导入功能
    importFromFileBtn.addEventListener('click', function() {
        fileInput.click(); // 触发文件选择对话框
    });
    
    // 处理文件选择
    fileInput.addEventListener('change', function(e) {
        const file = e.target.files[0];
        if (!file) return;
        
        const reader = new FileReader();
        reader.onload = function(e) {
            const content = e.target.result;
            importTasksFromText(content);
        };
        reader.readAsText(file);
        
        // 重置文件输入，以便可以再次选择同一文件
        fileInput.value = '';
    });
    
    // 从文本内容导入任务
    function importTasksFromText(content) {
        if (!content.trim()) {
            alert('文件内容为空！');
            return;
        }
        
        // 按换行符分割文本，过滤掉空行
        const newTasks = content.split('\n')
            .map(line => line.trim())
            .filter(line => line.length > 0);
        
        if (newTasks.length === 0) {
            alert('没有找到有效的任务内容！');
            return;
        }
        
        // 确认是否替换或追加
        const confirmResult = confirm(`已从文件中读取到 ${newTasks.length} 个任务，是否替换当前任务列表？\n点击"确定"替换，点击"取消"追加到列表开头。`);
        
        if (confirmResult) {
            // 替换当前任务
            tasks = [...newTasks];
        } else {
            // 追加到列表开头（保持导入文件中的顺序）
            tasks = [...newTasks, ...tasks];
        }
        
        saveTasks();
        renderTasks();
        showTemporaryNotification(`已成功导入 ${newTasks.length} 个任务！`);
    }
});
